package main

import (
	"os"
	"text/template"
)

type User struct {
	UserName string
	Age      int
	Sex      string
}

func main() {
	// func1()
	func2()
}

//方式一：直接替换变量
func func1() {
	name := "wahaha"
	//建立一个模板，内容是"hello, {{.}}"
	tmpl, err := template.New("test").Parse("hello, {{.}}")
	if err != nil {
		panic(err)
	}
	//将string与模板合成，变量name的内容会替换掉{{.}}
	err = tmpl.Execute(os.Stdout, name)
	//合成结果放到os.Stdout里
	if err != nil {
		panic(err)
	}
}

//使用struct
func func2() {
	user := User{"张三", 18, "nan"}

	//定义模板内容
	muban := "Name : {{.UserName}} , Sex : {{.Sex}} , Age : {{.Age}}"
	//创建模板
	tmpl, err := template.New("model_name")
	tmpl, err = tmpl.Parse(muban)
	if err != nil {
		panic(err)
	}

	//将struct与模板合成，合成结果放到os.Stdout里
	err = tmpl.Execute(os.Stdout, user)
	if err != nil {
		panic(err)
	}
}

// 多模板
func func3() {
	user := User{"张三", 18, "nan"}

	//定义模板内容
	muban := "Name : {{.UserName}} , Sex : {{.Sex}} , Age : {{.Age}}"
	muban1 := "姓名 : {{.UserName}} , 性别 : {{.Sex}} , 年龄 : {{.Age}}"
	//创建模板
	tmpl, err := template.New("model_name").Parse(muban)
	tmpl, err = template.New("model_name1").Parse(muban1)

	err = tmpl.ExecuteTemplate(os.Stdout, "model_name", user)
	err = tmpl.ExecuteTemplate(os.Stdout, "model_name1", user)
	if err != nil {
		panic(err)
	}
}
